home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 20 / 5 / DISK2058.ZIP / UNFAST.EXE / CLIST.F next >
Text File  |  1980-01-01  |  2KB  |  124 lines

  1.  
  2. ;== CLIST - LIST PROGRAMS IN TWO COLUMNS ===================================
  3.  
  4. var columns,lines,wide
  5. const pmax=16384,imax=10240
  6. pbuffer ? pmax
  7. ibuffer ? imax
  8.  
  9. #short
  10. #inpend=0
  11. on error
  12.     {
  13.     print bios:error msg "\dos.err"
  14.     print bios "!":stop
  15.     }
  16.  
  17. proc new_buffer
  18.     {
  19.     pline=0:pcol=0:px=0
  20.     fill pmax/2 from pbuffer with 2020h
  21.     }
  22.  
  23. proc print_buffer
  24.     {
  25.     lprint chr 15;chr 27;chr '0';
  26.     if pline then
  27.     {
  28.     m=pbuffer
  29.     repeat lines
  30.         {
  31.         repeat columns
  32.         {
  33.         lprint chr peekb m;:m++
  34.         }
  35.         lprint
  36.         }
  37.     lprint ff;
  38.     }
  39.     new_buffer
  40.     }
  41.  
  42. proc next_col
  43.     {
  44.     pcol+=wide+4:px=0
  45.     if pcol>=columns then print_buffer
  46.     pline=0
  47.     }
  48.  
  49. proc next_line
  50.     {
  51.     px=0
  52.     pline++
  53.     if pline>=lines then next_col
  54.     }
  55.  
  56. proc put(p)
  57.     {
  58.     if px>=wide then next_line
  59.     pokeb pbuffer+pline*columns+pcol+px,p
  60.     px++
  61.     }
  62.  
  63. print bios "CLIST: By Peter Campbell" cr lf
  64. print bios "File(s) ";
  65. inputs name
  66. print bios
  67. if peekb (name+2)=0 then error 999
  68.  
  69. lines=75
  70. columns=120
  71. wide=(columns/2)-2
  72. if (lines*columns)>pmax then error 11
  73.  
  74. find first name+2
  75. goto fentry
  76.  
  77. forever
  78.     {
  79.     find next
  80.     fentry:
  81.     moveb 13 from dta segment|dta offset+30 to name
  82.     open #1,name
  83.     m=name:while peekb m lprint chr peekb m;:m++
  84.     lprint
  85.     repeat 20 lprint "=";
  86.     lprint
  87.  
  88.     new_buffer
  89.     next_read:
  90.     ilen=read #1,imax to ibuffer
  91.     if ilen=0 then goto innext
  92.     iadd=ibuffer
  93.  
  94.     while ilen
  95.     {
  96.     c=peekb iadd:ilen--:iadd++
  97.     if c=26 then goto innext
  98.     if c=10 then goto ill
  99.     if c=13 then
  100.         {
  101.         next_line
  102.         goto ill
  103.         }
  104.     if c=9 then
  105.         {
  106.         x=(px and 248)+8
  107.         repeat x-px put(' ')
  108.         }
  109.     else put(c)
  110.  
  111.     ill:
  112.     }
  113.     goto next_read
  114.  
  115.     innext:
  116.     close #1
  117.     print_buffer
  118.     }
  119.  
  120. ;== DATA ===================================================================
  121.  
  122. name:
  123. string 20
  124.